# 协程,又叫做微线程, 纤程, Coroutine
# 进程 > 线程 > 协程(纤程)
# 协程: 另外一种实现多任务的方式，只不过比线程更小. 它自带CPU上下文，这样只要在合十的时机，就可以把一个纤程钱换到另外一个纤程

from greenlet import greenlet

# greenlet 由 C语言实现的协程模块,通过 switch()来实现任意函数之间的切换

def sing():
    print("Singing")
    g2.switch()
    print("Singing Done")

def dance():
    print("Dance")
    print("Dance Done")
    g1.switch()


if __name__ == "__main__":
    g1 = greenlet(sing)
    g2 = greenlet(dance)
    g1.switch()
    g2.switch()
